首先参考前面 Golang 新项目实践 - 搭建环境
内容.
然后这次主要说说文件结构方面的内容:
方案一: 每个服务一个单独工程文件夹
- 以服务名创建一个目录, 比如
~/demo-service-1
, 然后添加.envrc
:
1 | export GOPATH=`pwd` |
这意为着在此创建了一个 GOPATH
- 然后创建
~/demo-service-1/{bin,pkg,src}
路径
这个和正常全局的 GOPATH 是一样的.
- 在
src
下创建服务
由于每个工程文件夹单独一个服务, 这里可以只创建一个文件夹, 并且和服务名一致.
~/demo-service-1/src/demo-service-1/
就是酱紫.
- 然后一般情况需要在服务下创建另一个
.envrc
用于翻墙
1 | export GOPATH=`pwd`/../../ |
Note: 这里需要注意, 如果不重复指定 GOPATH 会被覆盖. /(ㄒoㄒ)/~~
- 最后的文件结构如下:
1 | ➜ ~ > tree -a -L 3 demo-service-1 |
方案二: 每个项目一个单独工程
情况和上面类似, 只不过以项目为单位
1 | ➜ ~ tree -a -L 3 demo-proj |
说说 Git 管理
Git 管理上, 一般 bin, pkg, 和 src 层级都是不提交的.
这意味着无论使用哪种结构组织方式, Git 上面代码都是以服务为单位:
demo-service-1
->https://github.com/company/demo-service-1.git
demo-service-2
->https://github.com/company/demo-service-2.git
说说 Glide 包依赖
在每个单独服务文件夹下, 用 glide 管理自己的依赖.